package com.example.db;


import com.example.db.model.IPage;


import java.util.List;

/**
 * @Classname TableService
 * @Description TODO
 * @Date 2022/5/29 20:33
 * @Created by XiongXiong
 * @Author: X.I.O
 */
public interface TableService {

    /**
     *
     * @param <T>  通过主键id获取
     */
    public <T> T getOneById(Object id, Class<?> cls);

//    /**
//     * (作废)
//     * 更新
//     */
//    public <T> T updateOneById(T t, Class<?> cls);

    /**
     * 更新
     * @param t
     * @param cls
     * @param <T>
     * @return
     */
    public <T> T updateById(T t,Class< ? > cls);

//    /**
//     * （作废）
//     * 新增
//     */
//    public <T> T saveOne(T t, Class<?> cls);

    /**
     * 通过id删除
     * @param id
     * @param <T>
     * @return
     */
    public <T> void deleteById(Object id,Class<T> cls);

    /**
     * 新增
     * @param t
     * @param cls
     * @param <T>
     * @return
     */
    public <T> T save(T t,Class< ? > cls);

    /**
     * 查询列表
     * @param <T>
     * @return
     */
    public <T> List<T> getList(Class<?> cls);



    /**
     *
     * @param cls
     * @return
     */
    public SqlBuilder getSqlBuilder(Class<?> cls);

    /**
     * 获取一个
     * @param sqlBuilder
     * @param <T>
     * @return
     */
    public <T> T selectOne(SqlBuilder sqlBuilder, Class<?> cls);

    /**
     * 获取列表
     * @param sqlBuilder
     * @param <T>
     * @return
     */
    public <T> List<T> selectList(SqlBuilder sqlBuilder, Class<?> cls);

    /**
     * 获取分页
     * @param sqlBuilder
     * @param <T>
     * @return
     */
    public <T> IPage<T> getPage(SqlBuilder sqlBuilder, Class<?> cls);
}
